//
//  HomeViewController.swift
//  WeiBo_NB
//
//  Created by apple on 15/3/5.
//  Copyright (c) 2015年 Ai. All rights reserved.
//

import UIKit

class HomeViewController: UITableViewController {

    
    // 定义模型变量
    var status:StatusData?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        SVProgressHUD.show()
        // 在控制器中调用模型提供的接口来加载数据
        StatusData.loadStatus({ (data, error) -> () in
            if error != nil{
                SVProgressHUD.showInfoWithStatus("网速太慢，请稍后重试")
                return
            }
            SVProgressHUD.dismiss()
            if data != nil{
                // 将转换过来的模型，传递给当前控制器
                self.status = data
                self.tableView.reloadData()
            }
        })
}
    
    ///  根据indexpath，返回模型和不同的Cell标示符
    func identifierCellID(indexPath:NSIndexPath) -> (status:Status,cellID:String){
            var statu = self.status!.statuses![indexPath.row]
        if statu.retweeted_status != nil{
            return (statu,"RETWEETED")
        }else{
            return (statu,"HOMECELL")
        }
    }

    // MARK: - Table view data source

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return status?.statuses?.count ?? 0
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let tempStatu = identifierCellID(indexPath)
        
        // 不需要创建cell吗？
        var cell = tableView.dequeueReusableCellWithIdentifier(tempStatu.cellID) as! StatusCell
        cell.status = tempStatu.status
        return cell
    }
    // 行高的处理
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        let tempStatu = identifierCellID(indexPath)
        var cell = tableView.dequeueReusableCellWithIdentifier(tempStatu.cellID) as! StatusCell
        return cell.cellHeight(tempStatu.status)
    }
    
    // 预估行高，能大量减少系统调用heightForRowAtIndexPath方法
    override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
            return 300
    }

 


}
